package com.molichuxing.gateway.bff.order.services;

import com.molichuxing.framework.dto.Paged;
import com.molichuxing.gateway.bff.order.entity.request.create.OrderDealerCreateVo;
import com.molichuxing.gateway.bff.order.entity.request.modify.OrderDealerCarChangeVinModifyVo;
import com.molichuxing.gateway.bff.order.entity.request.modify.OrderDealerDispatcherModifyVo;
import com.molichuxing.gateway.bff.order.entity.request.modify.OrderDeliverySlipModifyVo;
import com.molichuxing.gateway.bff.order.entity.response.*;

import java.util.List;
import java.util.Map;

/**
 * @Author: renzhengyu
 * @Description:
 * @Date: Created in 10:31 2019/8/22
 * @Modified By:
 **/
public interface OrderDealerBffService {


    Paged<OrderDealerVo> orderDealerList(Map<String, Object> params, Integer pageNum, Integer pageSize) throws Exception;

    OrderDealerDetailBasicVo orderDetailBasic(Long orderCode) throws Exception;

    OrderDealerDetailVehicleVo orderDetailVehicle(Long orderCode) throws Exception;

    List<OrderDealerDetailScheduleVo> orderSchedule(Long orderCode) throws Exception;

    Paged<OrderDealerDetailStartVo> orderDealerStartList(Long orderCode, Integer carStatus)throws Exception;

    Boolean orderDealerSendCar(OrderDealerDispatcherModifyVo orderDealerDispatcherModifyVo)throws Exception;

    Boolean orderDealerCarRefuse(Long orderCode, Integer carId, String rejectReason)throws Exception;

    Boolean orderDealerCarChange(OrderDealerCarChangeVinModifyVo orderDealerCarChangeVinModifyVo)throws Exception;

    Boolean modifyDeliverySlip(OrderDeliverySlipModifyVo orderDeliverySlipModifyVo)throws Exception;

    Boolean orderDealerCreate(OrderDealerCreateVo orderDealerCreateVo)throws Exception;

    Boolean contractCodeRepeat(String contractCode)throws Exception;

    OrderDealerCarInfoVo carInfoRepeat(Integer vehicleId, String vin)throws Exception;

    List<OrderDealerDetailStatusVo> getDealerOrderFlow(Long orderCode)throws Exception;

    OrderDealerDetailBasicInfoVo getDetailBasic(Long orderCode)throws Exception;

    List<OrderDealerDetailScheduleVo> orderSchedulePlan(Long orderCode)throws Exception;

    List<OrderDealerDetailScheduleVo> orderScheduleExpire(Long orderCode)throws Exception;

    List<OrderFuzzyQueryVo> getDealerListByName(String name)throws Exception;

    List<OrderFuzzyQueryVo> getSubcompanyByName(String name)throws Exception;

    List<OrderScheduleUnpaidVo> getOrderScheduleUnpaid(Integer dealerId)throws Exception;

    List<OrderFuzzyQueryVo> getDealerRepaymentListByName(String name) throws Exception;
}
